The invention relates generally to graphics processing and more particularly to a configurable vertex blending circuit and method for use.
As computers continue to evolve, more complex three-dimensional (3D) graphics processing operations are utilized by various computer applications. Typically, the processing operations required for drawing 3D objects in a 3D setting are very complex. In many cases, these processing operations are performed at least partially using software running on the central processing unit (CPU) within the computer system. In many cases, this consumes significant amounts of the CPU""s processing bandwidth such that there is less remaining bandwidth for performing other computational operations. As such, it is desirable to have dedicated circuitry perform as much of the graphics processing operations as possible.
In order to include a 3D object in a display image, a model is often constructed for the object in a coordinate system that is well suited for the construction of such models. This is often referred to as constructing a model in the object coordinate system, which may also be referred to as a model coordinate system. In order to project, or map this model into an environmental setting corresponding to an image, matrix operations are often used to perform such projections. For example, a model matrix may be used to put the model for the object into a world perspective (e.g. project the model for a bottle onto a table included in the xe2x80x9cworldxe2x80x9d perspective within which the bottle exists). Such matrix operations are typically applied to each vertex of the model individually.                     [                                                                                                                                                                          x                                                                                                                      y                                                                                                                                                          z                                                                                                          w                                      ]                                          Object                                                Vertex                                ⁡          [                                                                                                        4                    xc3x97                    4                                                                                                Model                                                                                          Matrix                              ]        =            [                                                                                                                                                      x                                                                                                            y                                                                                                                                          z                                                                                          w                              ]                                World                                      Vertex                    
A similar matrix operation may be performed such that the perspective of the viewer of the scene within which the object is included is taken into account. As such, as the perspective of the viewer changes, the orientation of the different objects within the displayed image will change. The matrix utilized to perform such alterations based on perspective of the viewer is commonly referred to as a view matrix. In order to simplify the matrix operations, the model and view matrices may be combined to produce a composite matrix such that only one matrix mathematical operation must be performed.
Relationships between different objects, or portions of objects, on the display can create problematic situations that can result in image aberrations. For example, if an arm or similar appendage is constructed of a forearm construct as well as an upper arm construct, the two constructs, or objects, are interrelated in that they share a common boundary at a joint (the elbow). Techniques such as xe2x80x9cskinningxe2x80x9d have been developed to allow each object to be treated individually, while ensuring that their interrelationship is maintained by allowing vertices to be shared by objects. Weighted calculations are performed to determine the final location of the shared vertices within the view space such that display aberrations are minimized. Such skinning operations only utilize a single position for each vertex that is blended, and multiple matrices and blending weights are applied to the position to determine the resulting blended vertex. Circuitry designed to perform such operations exists in the art, but does not provide the level of flexibility required for the implementation of other three-dimensional processing operations that are becoming increasingly desirable as graphics processing continues to evolve.
One application that is becoming more prominent in graphics processing is morphing, or xe2x80x9ctweeningxe2x80x9d. In morphing operations, the displayed image initially shows one object, and is gradually altered such that a second object is gradually phased in as the first object is phased out. Examples commonly seen in video productions include the morphing of one person""s face to that of another, where the interchange between the two faces is so gradual that an impressive effect is created. In current graphics processing systems, the operations required for performing the morphing operations are typically performed in software. As described earlier, such complex software calculations are undesirable as they consume processing bandwidth that may be better utilized for other operations.
Therefore, a need exists for a vertex blending circuit that is configurable in a manner such that complex graphics processing operations involving matrix calculations can be performed using dedicated hardware such that processing bandwidth within the central processor of the computing system is offloaded.